ab57fb4179f79cee81955fc212f953d3e8e775f5,app/src/main/java/davidandroidprojecttools/qq986945193/com/davidandroidprojecttools/utils/OkHttpUtils.java,OkHttpUtils,OkHttpUtils,#,54

Before Change

package davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.utils;

import android.os.Handler;
import android.os.Looper;
import android.util.Log;

import com.google.gson.Gson;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.callback.OkHttpBaseCallback;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.callback.OnGetByteArrayListener;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.callback.OnGetJsonObjectListener;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.callback.OnGetOkhttpStringListener;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.constant.Constants;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.enums.HttpMethodType;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Headers;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

/**
 * @author :程�员�冰
 * @新浪微� :http://weibo.com/mcxiaobing
 * @GitHub: https://github.com/QQ986945193
 * @CSDN�客: http://blog.csdn.net/qq_21376985
 * @交�Qq :986945193
 * <p/>
 * OkHttp使用�利进行�装
 */
public class OkHttpUtils {
    private static OkHttpClient client;
    private volatile static OkHttpUtils mOkHttputils;
    private final String TAG = OkHttpUtils.class.getSimpleName();//获得类å??
    private static Handler handler;
    //æ??交jsonæ•°æ?®
    private static final MediaType JSON = MediaType.parse("application/json;charset=utf-8");
    //æ??交字符串
    private static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown;charset=utf-8");

    private static Gson gson;

    private OkHttpUtils() {
        client = new OkHttpClient().newBuilder().readTimeout(20, TimeUnit.SECONDS)
                .connectTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(20, TimeUnit.SECONDS).build();
        handler = new Handler(Looper.getMainLooper());
        gson = new Gson();
    }

    //采用�例模�获�对象
    public static OkHttpUtils getInstance() {
        if (mOkHttputils == null) {
            synchronized (OkHttpUtils.class) {
                if (mOkHttputils == null) {
                    mOkHttputils = new OkHttpUtils();
                }
            }
        }
        return mOkHttputils;
    }


    /**
     * 请求指定的url返回的结果是json字符串
     *
     * @param url
     * @param callBack
     */
    public void asyncJsonStringByURL(String url, final OnGetOkhttpStringListener callBack) {
        final Request request = new Request.Builder().url(url).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessJsonStringMethod(response.body().string(), callBack);
                }
            }
        });
    }

    /**
     * 请求返回的是jsonOject对象
     *
     * @param url
     * @param callBack
     */
    public void asyncJsonObjectByURL(String url, final OnGetJsonObjectListener callBack) {
        final Request request = new Request.Builder().url(url).addHeader(Constants.API_KEY, Constants.API_KEY_SECRET).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessJsonObjectMethod(response.body().string(), callBack);
                }
            }
        });
    }


    /**
     * 请求返回的是byte字节数组
     *
     * @param url
     * @param callBack
     */
    public void asyncGetByteByURL(String url, final OnGetByteArrayListener callBack) {
        final Request request = new Request.Builder().url(url).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessByteMethod(response.body().bytes(), callBack);
                }
            }
        });
    }


    /**
     * 表å?•æ??交  postæ??交
     *
     * @param url
     * @param params
     * @param callBack
     */
    public void sendComplexForm(String url, Map<String, String> params, final OnGetJsonObjectListener callBack) {
        RequestBody request_body = builderFormData(params);//表�对象,包�以input开始的对象,以html表�为主
        Request request = new Request.Builder().url(url).post(request_body).build();//采用postæ–¹å¼?æ??交
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessJsonObjectMethod(response.body().string(), callBack);
                }
            }
        });
    }

    /**
     * å?‘æœ?务器æ??交String请求
     *
     * @param url
     * @param content
     * @param callBack
     */
    public void sendStringByPostMethod(String url, String content, final OnGetJsonObjectListener callBack) {
        Request request = new Request.Builder().url(url).post(RequestBody.create(MEDIA_TYPE_MARKDOWN, content)).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessJsonObjectMethod(response.body().string(), callBack);
                }
            }
        });
    }

    /**
     * 请求返回的结果是json字符串
     *
     * @param jsonValue
     * @param callBack
     */
    private void onSuccessJsonStringMethod(final String jsonValue, final OnGetOkhttpStringListener callBack) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                if (callBack != null) {
                    try {
                        callBack.onResponse(jsonValue);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                }
            }
        });
    }

    /**
     * 请求返回的是byte[] 数组
     *
     * @param data
     * @param callBack
     */
    private void onSuccessByteMethod(final byte[] data, final OnGetByteArrayListener callBack) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                if (callBack != null) {
                    callBack.onResponse(data);
                }
            }
        });
    }

    /**
     * 返回�应的结果是json对象
     *
     * @param jsonValue
     * @param callBack
     */
    private void onSuccessJsonObjectMethod(final String jsonValue, final OnGetJsonObjectListener callBack) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                if (callBack != null) {
                    try {
                        callBack.onResponse(new JSONObject(jsonValue));
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }


    /**
     * 利用Get请求得到Json对象
     *
     * @param url
     * @param callback
     */

    public <T> void get(String url, Class<T> clazz, OkHttpBaseCallback callback) {


        Request request = buildGetRequest(url);

        request(request, clazz, callback);

    }


    /**
     * 利用POST请求得到Json对象
     *
     * @param url
     * @param callback
     */
    public <T> void post(String url, Map<String, String> param, Class<T> clazz, OkHttpBaseCallback callback) {

        Request request = buildPostRequest(url, param);
        request(request, clazz, callback);
    }


    private static String resultJsonStr = "";

    public <T> void request(final Request request, final Class<T> clazz, final OkHttpBaseCallback callback) {

        callback.onBeforeRequest(request);

        client.newCall(request).enqueue(new Callback() {

            @Override
            public void onFailure(Call call, IOException e) {
                callbackFailure(callback, request, e);

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                callback.onResponse(response);
                callbackResponse(callback, response);

                if (response.isSuccessful()) {

                    resultJsonStr = response.body().string();

                    LogUtil.E("okhttp_result " + resultJsonStr);
                    if (callback.mType == String.class) {
                        LogUtil.E("111");
                        callbackSuccess(callback, response, resultJsonStr);
                    } else {
                        try {
//                            Object obj = gson.fromJson(resultStr, clazz);
                            Object obj = gson.fromJson(resultJsonStr, callback.mType);
                            callbackSuccess(callback, response, obj);
                        } catch (com.google.gson.JsonParseException e) { // Json解�的错误
                            callback.onError(response, response.code(), e);
                            LogUtil.E("RESO" + response + "===" + response.code() + "!!!" + e.toString());
                        }
                    }
                } else {
                    callbackError(callback, response, null);
                }
            }

        });


    }

    /**
     * 设置请求头
     *
     * @param headersParams
     * @return
     */
    private Headers SetHeaders(Map<String, String> headersParams) {
        Headers headers = null;
        okhttp3.Headers.Builder headersbuilder = new okhttp3.Headers.Builder();

        if (headersParams != null) {
            Iterator<String> iterator = headersParams.keySet().iterator();
            String key = "";
            while (iterator.hasNext()) {
                key = iterator.next().toString();
                headersbuilder.add(key, headersParams.get(key));
                Log.d("get http", "get_headers===" + key + "====" + headersParams.get(key));
            }
        }
        headers = headersbuilder.build();

        return headers;
    }


    private void callbackSuccess(final OkHttpBaseCallback callback, final Response response, final Object obj) {

        handler.post(new Runnable() {
            @Override
            public void run() {
                callback.onSuccess(response, obj);
            }
        });
    }


    private void callbackError(final OkHttpBaseCallback callback, final Response response, final Exception e) {

        handler.post(new Runnable() {
            @Override
            public void run() {
                callback.onError(response, response.code(), e);
            }
        });
    }


    private void callbackFailure(final OkHttpBaseCallback callback, final Request request, final IOException e) {

        handler.post(new Runnable() {
            @Override
            public void run() {
                callback.onFailure(request, e);
            }
        });
    }


    private void callbackResponse(final OkHttpBaseCallback callback, final Response response) {

        handler.post(new Runnable() {
            @Override
            public void run() {
                callback.onResponse(response);
            }
        });
    }


    private Request buildPostRequest(String url, Map<String, String> params) {

        return buildRequest(url, HttpMethodType.POST, params);
    }

    private Request buildGetRequest(String url) {

        return buildRequest(url, HttpMethodType.GET, null);
    }

    private Request buildRequest(String url, HttpMethodType methodType, Map<String, String> params) {


        Request.Builder builder = new Request.Builder()
                .url(url).addHeader(Constants.API_KEY, Constants.API_KEY_SECRET);

        if (methodType == HttpMethodType.POST) {
            RequestBody body = builderFormData(params);
            builder.post(body);
        } else if (methodType == HttpMethodType.GET) {
            builder.get();
        }


        return builder.build();
    }

    /**
     * post请求�数
     *
     * @param params post请求�数的body
     * @return post�数体
     */
    private RequestBody builderFormData(Map<String, String> params) {


        FormBody.Builder form_builder = new FormBody.Builder();//表�对象,包�以input开始的对象,以html表�为主
        if (params != null && !params.isEmpty()) {
            for (Map.Entry<String, String> entry : params.entrySet()) {
                if (entry.getKey() == null || entry.getValue() == null) {
                    //以防出现个别�数为空,报空指针闪退
                } else {
                    form_builder.add(entry.getKey(), entry.getValue());
                }
            }
        }
        return form_builder.build();

    }

    /**
     * �得OKHTTP网络请求获得的JSON字符串
     */
    public static String getOkHttpJsonValue() {
        return resultJsonStr;
    }

    /**
     * get方法连接拼加�数
     */
    private String setUrlParams(Map<String, String> mapParams) {
        String strParams = "";
        if (mapParams != null) {
            Iterator<String> iterator = mapParams.keySet().iterator();
            String key = "";
            while (iterator.hasNext()) {
                key = iterator.next().toString();
                strParams += "&" + key + "=" + mapParams.get(key);
            }
        }

        return strParams;
    }


    /**
     * �步请求,在android开�中�常用,因为会阻塞UI线程
     *
     * @param url
     * @return
     */
    public String syncGetByURL(String url) {
        //构建一个request请求
        Request request = new Request.Builder().url(url).build();
        Response response = null;
        try {
            response = client.newCall(request).execute();//�步请求数�
            if (response.isSuccessful()) {
                return response.body().string();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


}

After Change

package davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.utils;

import android.os.Handler;
import android.os.Looper;
import android.util.Log;

import com.google.gson.Gson;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.callback.OkHttpBaseCallback;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.callback.OnGetByteArrayListener;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.callback.OnGetJsonObjectListener;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.callback.OnGetOkhttpStringListener;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.constant.Constants;
import davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.enums.HttpMethodType;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Headers;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

/**
 * @author :程�员�冰
 * @新浪微� :http://weibo.com/mcxiaobing
 * @GitHub: https://github.com/QQ986945193
 * @CSDN�客: http://blog.csdn.net/qq_21376985
 * @交�Qq :986945193
 * <p/>
 * OkHttp使用�利进行�装
 */
public class OkHttpUtils {
    private static OkHttpClient client;
    private volatile static OkHttpUtils mOkHttputils;
    private final String TAG = OkHttpUtils.class.getSimpleName();//获得类å??
    private static Handler handler;
    //æ??交jsonæ•°æ?®
    private static final MediaType JSON = MediaType.parse("application/json;charset=utf-8");
    //æ??交字符串
    private static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown;charset=utf-8");

    private static Gson gson;
    //这是一�设置的方法,
//    private OkHttpUtils() {
//        client = new OkHttpClient().newBuilder().readTimeout(20, TimeUnit.SECONDS)
//                .connectTimeout(10, TimeUnit.SECONDS)
//                .writeTimeout(20, TimeUnit.SECONDS).build();
//        handler = new Handler(Looper.getMainLooper());
//        gson = new Gson();
//    }

    //采用�例模�获�对象
    public static OkHttpUtils getInstance() {
        if (mOkHttputils == null) {
            synchronized (OkHttpUtils.class) {
                if (mOkHttputils == null) {
                    mOkHttputils = new OkHttpUtils();
                }
            }
        }
        return mOkHttputils;
    }

    private OkHttpUtils() {
        OkHttpClient.Builder clientBuild = new OkHttpClient.Builder();
        clientBuild.readTimeout(20, TimeUnit.SECONDS);//读�超时
        clientBuild.connectTimeout(10, TimeUnit.SECONDS);//连接超时
        clientBuild.writeTimeout(60, TimeUnit.SECONDS);//写入超时
        client = clientBuild.build();
        handler = new Handler(Looper.getMainLooper());
        gson = new Gson();
    }


    /**
     * 请求指定的url返回的结果是json字符串
     *
     * @param url
     * @param callBack
     */
    public void asyncJsonStringByURL(String url, final OnGetOkhttpStringListener callBack) {
        final Request request = new Request.Builder().url(url).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessJsonStringMethod(response.body().string(), callBack);
                }
            }
        });
    }

    /**
     * 请求返回的是jsonOject对象
     *
     * @param url
     * @param callBack
     */
    public void asyncJsonObjectByURL(String url, final OnGetJsonObjectListener callBack) {
        final Request request = new Request.Builder().url(url).addHeader(Constants.API_KEY, Constants.API_KEY_SECRET).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessJsonObjectMethod(response.body().string(), callBack);
                }
            }
        });
    }


    /**
     * 请求返回的是byte字节数组
     *
     * @param url
     * @param callBack
     */
    public void asyncGetByteByURL(String url, final OnGetByteArrayListener callBack) {
        final Request request = new Request.Builder().url(url).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessByteMethod(response.body().bytes(), callBack);
                }
            }
        });
    }


    /**
     * 表å?•æ??交  postæ??交
     *
     * @param url
     * @param params
     * @param callBack
     */
    public void sendComplexForm(String url, Map<String, String> params, final OnGetJsonObjectListener callBack) {
        RequestBody request_body = builderFormData(params);//表�对象,包�以input开始的对象,以html表�为主
        Request request = new Request.Builder().url(url).post(request_body).build();//采用postæ–¹å¼?æ??交
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessJsonObjectMethod(response.body().string(), callBack);
                }
            }
        });
    }

    /**
     * å?‘æœ?务器æ??交String请求
     *
     * @param url
     * @param content
     * @param callBack
     */
    public void sendStringByPostMethod(String url, String content, final OnGetJsonObjectListener callBack) {
        Request request = new Request.Builder().url(url).post(RequestBody.create(MEDIA_TYPE_MARKDOWN, content)).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response != null && response.isSuccessful()) {
                    onSuccessJsonObjectMethod(response.body().string(), callBack);
                }
            }
        });
    }

    /**
     * 请求返回的结果是json字符串
     *
     * @param jsonValue
     * @param callBack
     */
    private void onSuccessJsonStringMethod(final String jsonValue, final OnGetOkhttpStringListener callBack) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                if (callBack != null) {
                    try {
                        callBack.onResponse(jsonValue);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                }
            }
        });
    }

    /**
     * 请求返回的是byte[] 数组
     *
     * @param data
     * @param callBack
     */
    private void onSuccessByteMethod(final byte[] data, final OnGetByteArrayListener callBack) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                if (callBack != null) {
                    callBack.onResponse(data);
                }
            }
        });
    }

    /**
     * 返回�应的结果是json对象
     *
     * @param jsonValue
     * @param callBack
     */
    private void onSuccessJsonObjectMethod(final String jsonValue, final OnGetJsonObjectListener callBack) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                if (callBack != null) {
                    try {
                        callBack.onResponse(new JSONObject(jsonValue));
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }


    /**
     * 利用Get请求得到Json对象
     *
     * @param url
     * @param callback
     */

    public <T> void get(String url, Class<T> clazz, OkHttpBaseCallback callback) {


        Request request = buildGetRequest(url);

        request(request, clazz, callback);

    }


    /**
     * 利用POST请求得到Json对象
     *
     * @param url
     * @param callback
     */
    public <T> void post(String url, Map<String, String> param, Class<T> clazz, OkHttpBaseCallback callback) {

        Request request = buildPostRequest(url, param);
        request(request, clazz, callback);
    }


    private static String resultJsonStr = "";

    public <T> void request(final Request request, final Class<T> clazz, final OkHttpBaseCallback callback) {

        callback.onBeforeRequest(request);

        client.newCall(request).enqueue(new Callback() {

            @Override
            public void onFailure(Call call, IOException e) {
                callbackFailure(callback, request, e);

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                callback.onResponse(response);
                callbackResponse(callback, response);

                if (response.isSuccessful()) {

                    resultJsonStr = response.body().string();

                    LogUtil.E("okhttp_result " + resultJsonStr);
                    if (callback.mType == String.class) {
                        LogUtil.E("111");
                        callbackSuccess(callback, response, resultJsonStr);
                    } else {
                        try {
//                            Object obj = gson.fromJson(resultStr, clazz);
                            Object obj = gson.fromJson(resultJsonStr, callback.mType);
                            callbackSuccess(callback, response, obj);
                        } catch (com.google.gson.JsonParseException e) { // Json解�的错误
                            callback.onError(response, response.code(), e);
                            LogUtil.E("RESO" + response + "===" + response.code() + "!!!" + e.toString());
                        }
                    }
                } else {
                    callbackError(callback, response, null);
                }
            }

        });


    }

    /**
     * 设置请求头
     *
     * @param headersParams
     * @return
     */
    private Headers SetHeaders(Map<String, String> headersParams) {
        Headers headers = null;
        okhttp3.Headers.Builder headersbuilder = new okhttp3.Headers.Builder();

        if (headersParams != null) {
            Iterator<String> iterator = headersParams.keySet().iterator();
            String key = "";
            while (iterator.hasNext()) {
                key = iterator.next().toString();
                headersbuilder.add(key, headersParams.get(key));
                Log.d("get http", "get_headers===" + key + "====" + headersParams.get(key));
            }
        }
        headers = headersbuilder.build();

        return headers;
    }


    private void callbackSuccess(final OkHttpBaseCallback callback, final Response response, final Object obj) {

        handler.post(new Runnable() {
            @Override
            public void run() {
                callback.onSuccess(response, obj);
            }
        });
    }


    private void callbackError(final OkHttpBaseCallback callback, final Response response, final Exception e) {

        handler.post(new Runnable() {
            @Override
            public void run() {
                callback.onError(response, response.code(), e);
            }
        });
    }


    private void callbackFailure(final OkHttpBaseCallback callback, final Request request, final IOException e) {

        handler.post(new Runnable() {
            @Override
            public void run() {
                callback.onFailure(request, e);
            }
        });
    }


    private void callbackResponse(final OkHttpBaseCallback callback, final Response response) {

        handler.post(new Runnable() {
            @Override
            public void run() {
                callback.onResponse(response);
            }
        });
    }


    private Request buildPostRequest(String url, Map<String, String> params) {

        return buildRequest(url, HttpMethodType.POST, params);
    }

    private Request buildGetRequest(String url) {

        return buildRequest(url, HttpMethodType.GET, null);
    }

    private Request buildRequest(String url, HttpMethodType methodType, Map<String, String> params) {


        Request.Builder builder = new Request.Builder()
                .url(url).addHeader(Constants.API_KEY, Constants.API_KEY_SECRET);

        if (methodType == HttpMethodType.POST) {
            RequestBody body = builderFormData(params);
            builder.post(body);
        } else if (methodType == HttpMethodType.GET) {
            builder.get();
        }


        return builder.build();
    }

    /**
     * post请求�数
     *
     * @param params post请求�数的body
     * @return post�数体
     */
    private RequestBody builderFormData(Map<String, String> params) {


        FormBody.Builder form_builder = new FormBody.Builder();//表�对象,包�以input开始的对象,以html表�为主
        if (params != null && !params.isEmpty()) {
            for (Map.Entry<String, String> entry : params.entrySet()) {
                if (entry.getKey() == null || entry.getValue() == null) {
                    //以防出现个别�数为空,报空指针闪退
                } else {
                    form_builder.add(entry.getKey(), entry.getValue());
                }
            }
        }
        return form_builder.build();

    }

    /**
     * �得OKHTTP网络请求获得的JSON字符串
     */
    public static String getOkHttpJsonValue() {
        return resultJsonStr;
    }

    /**
     * get方法连接拼加�数
     */
    private String setUrlParams(Map<String, String> mapParams) {
        String strParams = "";
        if (mapParams != null) {
            Iterator<String> iterator = mapParams.keySet().iterator();
            String key = "";
            while (iterator.hasNext()) {
                key = iterator.next().toString();
                strParams += "&" + key + "=" + mapParams.get(key);
            }
        }

        return strParams;
    }


    /**
     * �步请求,在android开�中�常用,因为会阻塞UI线程
     *
     * @param url
     * @return
     */
    public String syncGetByURL(String url) {
        //构建一个request请求
        Request request = new Request.Builder().url(url).build();
        Response response = null;
        try {
            response = client.newCall(request).execute();//�步请求数�
            if (response.isSuccessful()) {
                return response.body().string();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


}